﻿#pragma once

#include "pch.h"
#include "core/Macro.h"
#include "function/EventSystem/Event.h"

namespace Engine 
{
	class ENGINE_API Layer
	{
	public:
		explicit Layer(std::string name = "Layer") : debugName(std::move(name)){}
		virtual ~Layer() = default;

		virtual void OnAttach() {}
		virtual void OnDetach() {}
		virtual void OnUpdate(const float deltaTime) {}
		virtual void OnImGuiRender() {}
		virtual void OnEvent(Event& event) {}

		[[nodiscard]] const std::string& GetName() const { return debugName; }
	protected:
		std::string debugName;
	};
}
